/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package negocio;

import Utilidades.VariaveisEstaticas;
import dao.ManterMateriaPrimaDAO;
import dominio.MateriaPrima;
import java.io.Serializable;
import java.util.List;
import javax.persistence.RollbackException;

/**
 *
 * @author Huliane
 */

public class ManterMateriaPrimaNegocio implements Serializable {
    private ManterMateriaPrimaDAO manterMateriaprimaDAO;

    public ManterMateriaPrimaNegocio() {
        manterMateriaprimaDAO = new ManterMateriaPrimaDAO();
    }

    /**
     *Método que irá chamar o create() do DAO, armazenando uma matéria-prima no BD.
     *@param materiaPrima Materiaprima
     *@return SUCESSO(1) caso a materiaPrima seja inserido com êxito; ERRO_DUPLICAÇÃO(2) caso ocorra
     *uma materiaPrima já existente no sistema; ERRO_BD(3) erro de persistência.
     */
    public int create(MateriaPrima materiaPrima) {
        try {
            manterMateriaprimaDAO .create(materiaPrima);
            return VariaveisEstaticas.SUCESSO;
        } catch (RollbackException p) {
            return VariaveisEstaticas.ERRO_DUPLICACAO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }


    /**
     *Método que irá chamar o edit() do DAO, editando uma materiaPrima no BD.
     *@param materiaPrima Materiaprima
     *@return SUCESSO(1) int caso a materiaPrima seja inserido com êxito; ERRO_DUPLICAÇÃO(2) int caso ocorra
     *a materiaPrima já exista; ERRO_BD(3) int erro de persistência.
     */
    public int edit(MateriaPrima materiaPrima) {
        try {
            manterMateriaprimaDAO.edit(materiaPrima);
            return VariaveisEstaticas.SUCESSO;
        } catch (RollbackException r) {
            return VariaveisEstaticas.ERRO_DUPLICACAO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }


    /**
     *Método que irá chamar o destroy() do DAO, deletando a materiaPrima no BD.
     *@param materiaPrima Materiaprima
     *@return SUCESSO(1) int caso a materiaPrima  seja inserido com êxito; ERRO_BD(3) int erro de persistência.
     */

    public int destroy(MateriaPrima materiaPrima) {
        try {
            manterMateriaprimaDAO.destroy(materiaPrima.getId());
            return VariaveisEstaticas.SUCESSO;
        } catch (Exception e) {
            return VariaveisEstaticas.ERRO_BD;
        }
    }

    /**
     * Método responsável por chamar o método findMateriaprimaEntities() do DAO. Retorna uma lista de materiaPrimas.
     * @return List<Materiaprima>
     */

    public List<MateriaPrima> findMateriaprimaEntities() {
        return manterMateriaprimaDAO.findMateriaPrimaEntities();
    }
}
